import 'package:get/get_state_manager/get_state_manager.dart';
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:flutter_jd/tools/data/mock.dart';
import 'package:get/state_manager.dart';
import 'package:get/get.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';

class HomeController extends GetxController {
  // 状态栏高度
  final statusBarHeight =
      RxDouble(MediaQueryData.fromWindow(window).padding.top);
  // 动态顶部背景高度
  final backgroundHeightDynamic = RxDouble(0);
  // 底部导航高度
  final bottomBarHeight = RxDouble(50.h);
  // 主容器滚动距离
  final offsetTop = RxDouble(0);
  // 搜索栏高度
  final searchBarHeight = RxDouble(30.h);
  // 应用列表当前索引
  final appListCurInd = RxInt(0);
  // 轮播图数据
  List bannerList = BANNER_LIST;
  // 应用列表1
  List appList1 = TOOLS_LIST1;
  // 应用列表2
  List appList2 = TOOLS_LIST2;
  // 商品列表
  final goodsList = RxList(PRODUCT_LIST);

  // 屏幕高度
  double screenHeight = Get.height;
  // 容器距离顶部的高度
  double mainOffsetSearch = 5.h;
  // 容器距离顶部的距离
  double mainTop = 0;
  // 容器高度（屏幕高度 - 状态栏 - 搜索栏 - offset - 底部导航）
  double mainHeight = 0;

  final list = [
    '首页',
    '电脑办公',
    '手机',
    '深圳',
    '生鲜',
    '数码',
    '家电',
    '护肤',
    '运动',
    '男装',
  ].obs;
  final navIndex = 0.obs;

  @override
  void onInit() {
    super.onInit();
    init();
  }

  // 初始化
  init() {
    initScreen();
    requestPermiss();
    backgroundHeightDynamic.value = statusBarHeight.value + 85.h;
  }

  void initScreen() {
    mainTop =
        (statusBarHeight.value.h + searchBarHeight.value + mainOffsetSearch.h);
    mainHeight = screenHeight -
        (statusBarHeight.value + searchBarHeight.value + mainOffsetSearch) -
        bottomBarHeight.value;
  }

  // 请求开启权限（单个）
  void requestPermiss() async {
    PermissionStatus status = await Permission.notification.request();
    // 如果通知权限被永久关闭
    if (status.isPermanentlyDenied) {
      openAppSettings();
    }
  }

  // 页面滚动
  onScroll(e) {
    if (e is ScrollUpdateNotification && e.depth == 0) {
      offsetTop.value = e.metrics.pixels;
    }
  }
}
